/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package GestionEstadisticas;

import gestionJDBC.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import Gestionequipo.*;
import GestionJornada.*;
import java.io.*;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;        
import javax.swing.JOptionPane;
/**
 *
 * @author Fernandez
 */
public class EstadisticasDB {
    private static gestorJDBC gestor = gestorJDBC.getInstance();
    
    public EstadisticasDB(){
        
    }
    
    /*public int ExtraerJornada (File fich) {
        FileReader fr = null;
        BufferedReader br = null;
        String jornada = null;
        try{
            fr = new FileReader(fich);
            br = new BufferedReader(fr);
        }catch (FileNotFoundException e){
            e.printStackTrace();
        }
        
        try{
            jornada = br.readLine();
        }catch(IOException e){
            e.printStackTrace();
        }
        
        return Integer.valueOf(jornada);
    }*/
            
    public void GuardarEstadisticasEquipo (File fich){
        FileReader fr = null;
        BufferedReader br = null;
        String id_jornada = null;
        int njugadores = 0;
        boolean valido,salir=false;
        
        try{
            fr = new FileReader(fich);
            br = new BufferedReader(fr);
        }catch (FileNotFoundException e){
            e.printStackTrace();
        }
        
        try {
            id_jornada = br.readLine();
            njugadores = Integer.valueOf(br.readLine());
            
            for (int i=0; i<njugadores && !salir; i++){
                valido = gestor.Insertar("INSERT INTO estadisticas (id_jugador, id_jornada, minutos, puntos, tiros_de3, "
                                            + "tiros_totales_de3, tiros_de2, tiros_totales_de2, tiros_de1, tiros_totales_de1, "
                                            + "faltas_recibidas, rebotes_defensivos, rebotes_ofensivos, faltas_personales, "
                                            + "tapones_recibidos, tapones_realizados, asistencias, recuperaciones, "
                                            + "mates, perdidas, valoracion) "
                                            + "VALUES ('"+ br.readLine() + "','" + id_jornada + "','" + br.readLine()  
                                            + "','" + br.readLine() + "','" + br.readLine() + "','" + br.readLine()
                                            + "','" + br.readLine() + "','" + br.readLine() + "','" + br.readLine()
                                            + "','" + br.readLine() + "','" + br.readLine() + "','" + br.readLine()
                                            + "','" + br.readLine() + "','" + br.readLine() + "','" + br.readLine()
                                            + "','" + br.readLine() + "','" + br.readLine() + "','" + br.readLine()
                                            + "','" + br.readLine() + "','" + br.readLine() + "','" + br.readLine()
                                            + "')");
                
            
                if (!valido){
                    JOptionPane.showMessageDialog(null, "Error en la inserción de estadísticas\n");
                    salir = true;
                    
                }
            }
        }catch (IOException e){
            e.printStackTrace();
        }
        
    }     
    
    public ArrayList<Jornada> getJornadasJugadorEstadisticas (int id_jugador){
        
        ArrayList<Jornada> jornadas = new ArrayList<Jornada>();
        ResultSet rs;
        
        Jornada jor = null;
        
        rs = gestor.Consultar("SELECT * FROM jornada WHERE id_jornada IN (SELECT id_jornada FROM estadisticas e WHERE e.id_jugador ='"+id_jugador+"')");
        
        try {             
            while(rs.next()){
                jor = new Jornada();
                jor.setId( (Integer) rs.getObject("id_jornada"));    
                jor.setNumero_jornada( (Integer) rs.getObject("numero_jornada"));    
                
                jornadas.add(jor);                
            }
        } catch (SQLException ex) {
            Logger.getLogger(EstadisticasDB.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        return jornadas;
    }
    
    public Estadistica getEstadisticaJornadaJugador (int id_jornada,int id_jugador){
        Estadistica est = new Estadistica();
        
        ResultSet rs;
        
        rs = gestor.Consultar("SELECT * FROM estadisticas WHERE id_jornada ='"+id_jornada+"' AND id_jugador='"+id_jugador+"'");
        
        try {             
            while(rs.next()){
                est.Set_asistencias((Integer) rs.getObject("asistencias"));
                est.Set_faltas_personales((Integer) rs.getObject("faltas_personales"));
                est.Set_faltas_recibidas((Integer) rs.getObject("faltas_recibidas"));
                est.Set_mates((Integer) rs.getObject("mates"));
                est.Set_minutos((Float) rs.getObject("minutos"));
                est.Set_perdidas((Integer) rs.getObject("perdidas"));
                est.Set_puntos((Integer) rs.getObject("puntos"));
                est.Set_rebotes_defensivos( (Integer) rs.getObject("rebotes_defensivos"));
                est.Set_rebotes_ofensivos((Integer) rs.getObject("rebotes_ofensivos"));
                est.Set_recuperaciones((Integer) rs.getObject("recuperaciones"));
                est.Set_tapones_realizados((Integer) rs.getObject("tapones_realizados"));
                est.Set_tapones_recibidos((Integer) rs.getObject("tapones_recibidos"));
                est.Set_tiros_de1((Integer) rs.getObject("tiros_de1"));
                est.Set_tiros_de2((Integer) rs.getObject("tiros_de2"));
                est.Set_tiros_de3((Integer) rs.getObject("tiros_de3"));
                est.Set_tiros_totales_de1((Integer) rs.getObject("tiros_totales_de1"));
                est.Set_tiros_totales_de2((Integer) rs.getObject("tiros_totales_de2"));
                est.Set_tiros_totales_de3((Integer) rs.getObject("tiros_totales_de3"));
                est.Set_valoracion((Integer) rs.getObject("valoracion"));
                                
            }
        } catch (SQLException ex) {
            Logger.getLogger(EstadisticasDB.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        return est;
    }
    
    public ArrayList<Estadistica> getEstadisticasJugador (int id_jugador){
        
        ArrayList<Estadistica> estadisticas = new ArrayList<Estadistica>();
        Estadistica est = null;
        ResultSet rs;
        
        rs = gestor.Consultar("SELECT * FROM estadisticas WHERE id_jugador='"+id_jugador+"'");
        
        try {             
            while(rs.next()){
                est = new Estadistica();
                
                est.Set_asistencias((Integer) rs.getObject("asistencias"));
                est.Set_faltas_personales((Integer) rs.getObject("faltas_personales"));
                est.Set_faltas_recibidas((Integer) rs.getObject("faltas_recibidas"));
                est.Set_mates((Integer) rs.getObject("mates"));
                est.Set_minutos((Float) rs.getObject("minutos"));
                est.Set_perdidas((Integer) rs.getObject("perdidas"));
                est.Set_puntos((Integer) rs.getObject("puntos"));
                est.Set_rebotes_defensivos( (Integer) rs.getObject("rebotes_defensivos"));
                est.Set_rebotes_ofensivos((Integer) rs.getObject("rebotes_ofensivos"));
                est.Set_recuperaciones((Integer) rs.getObject("recuperaciones"));
                est.Set_tapones_realizados((Integer) rs.getObject("tapones_realizados"));
                est.Set_tapones_recibidos((Integer) rs.getObject("tapones_recibidos"));
                est.Set_tiros_de1((Integer) rs.getObject("tiros_de1"));
                est.Set_tiros_de2((Integer) rs.getObject("tiros_de2"));
                est.Set_tiros_de3((Integer) rs.getObject("tiros_de3"));
                est.Set_tiros_totales_de1((Integer) rs.getObject("tiros_totales_de1"));
                est.Set_tiros_totales_de2((Integer) rs.getObject("tiros_totales_de2"));
                est.Set_tiros_totales_de3((Integer) rs.getObject("tiros_totales_de3"));
                est.Set_valoracion((Integer) rs.getObject("valoracion"));
                
                estadisticas.add(est);                                
            }
        } catch (SQLException ex) {
            Logger.getLogger(EstadisticasDB.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        return estadisticas;
    }
    
}

